Large and complicated programming language code can be difficult to understand and difficult to modify for debugging and extension. A number of conventional techniques are used to organize and structure programming language code to make the code easier to understand and easier to modify. However, these conventional techniques of organizing and structuring code have drawbacks. For example, some of these techniques hide important information on the semantics of the code, while others tend to make code compilation more time-intensive.